    package hxy.bytecode;

    import java.util.Scanner;
    import java.util.Stack;

    /**
     * @author eric
     * @program bytecode
     * @description main函数
     * @date 2020/4/11
     */
    public class Main {

        private static Stack<Character> characterStack = new Stack<>();
        private static Stack<Double> doublesStack = new Stack<>();

        private static int isSwitch(char ch) {
            int number = 0;
            switch (ch) {
                case '+':
                    number = 0;
                    break;
                case '-':
                    number = 1;
                    break;
                case '*':
                    number = 2;
                    break;
                case '/':
                    number = 3;
                    break;
                case '(':
                    number = 4;
                    break;
                case ')':
                    number = 5;
                    break;
                case '=':
                    number = 7;
                    break;
            }
            return number;
        }

        private static String AddStacks(String reValue) {
            if (reValue.charAt(0) == '-') {
                reValue = "0" + reValue;
            }
            reValue = reValue + "=";
            char a = 0, nextTop = 0, b = 0;
            int length = reValue.length();
            double number = 0, tmp = 0, decimal = 1, result = 0, one = 0, two = 0;
            boolean flag = false, sflag = false, dflag = false, nflag = false, reckon;
            characterStack.push('=');
            int index = 0;
            while (index < length) {
                b = reValue.charAt(index);
                while (b >= '0' && b <= '9' || b == '.') {
                    if (b != ',') {
                        number = Double.parseDouble(String.valueOf(b));
                        tmp = (tmp * 10) + number;
                        flag = true;
                        if (dflag) {
                            decimal += 10;
                        }
                    } else {
                        dflag = true;
                    }
                    index++;
                    b = reValue.charAt(index);
                }
                reckon = true;
                if (flag == true) {
                    if (nflag || sflag) {
                        if (nflag)
                            nflag = false;
                        tmp = -tmp;
                    }
                    if (dflag) {
                        tmp /= decimal;
                        dflag = false;
                        decimal = 1;
                    }
                    doublesStack.push(tmp);
                    tmp = 0;
                    flag = false;
                    if (sflag && b == ')') {
                        sflag = false;
                    }
                    if (b == '-') {
                        char chs = reValue.charAt(index - 1);
                        char chn = reValue.charAt(index + 1);
                        if (chs == '+' || chs == '-' || chs == '+' || chs == '/' || chs == '(') {
                            if (chn == '(') sflag = true;
                            else
                                nflag = true;
                            reckon = false;
                        }
                    }
                    while ((reckon)) {
                        a = reValue.charAt(index);
                        nextTop = characterStack.pop();
                        switch (Judge(nextTop, a)) {
                            case '>':
                                try {
                                    two = doublesStack.pop();
                                    one = doublesStack.pop();
                                } catch (Exception e) {
                                    return "error";
                                }
                                switch (nextTop) {
                                    case '+':
                                        result = one + two;
                                        break;
                                    case '-':
                                        result = one - two;
                                        break;
                                    case '*':
                                        result = one * two;
                                        break;
                                    case '/':
                                        result = one / two;
                                        break;
                                }
                                doublesStack.push(result);
                                break;
                            case '<':
                                characterStack.push(nextTop);
                                characterStack.push(a);
                                reckon = false;
                                break;
                            case '=':
                                return doublesStack.pop().toString();
                        }
                    }
                    ++index;
                }
            }
            return null;
        }

        public static char Judge(char one, char two) {
            char[][] menu = {
                    {'>', '>', '<', '<', '<', '>', '<', '>'},
                    {'>', '>', '<', '<', '<', '>', '<', '>'},
                    {'>', '>', '>', '>', '<', '>', '<', '>'},
                    {'>', '>', '>', '>', '<', '>', '<', '>'},
                    {'<', '<', '<', '<', '<', 'K', '<', 'E'},
                    {'<', '<', '<', '<', '<', '<', '<', 'E'},
                    {'>', '>', '>', '>', '<', '>', '>', '>'},
                    {'<', '<', '<', '<', '<', '<', '<', '='},
            };
            int x = 0, y = 0;
            x = isSwitch(one);
            y = isSwitch(two);
            return menu[x][y];
        }

        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();
            System.out.println(AddStacks(s.trim()));
        }

    }
